package estado;

import comunicacion.Cliente;
import java.io.ObjectInputStream;
import mensaje.Mensaje;
import servidor.GestorPartida;

/**
 * Responsabilidad: Mantener y modificar el estado del servidor.
 */

public class EstadoPartida {

    private Estado estado;
    private Estado esperandoPartida;
    private Estado esperandoJugadores;
    private Estado jugando;

    public EstadoPartida(){
        esperandoPartida = new EsperandoPartida();
        esperandoJugadores = new EsperandoJugadores();
        jugando = new Jugando();
        setEsperandoPartida();
    }

    public void setJugando(){
        this.estado = jugando;
    }

    public void setEsperandoJugadores(){
        this.estado = esperandoJugadores;
    }

    public void setEsperandoPartida(){
        this.estado = esperandoPartida;
    }
    
    public Mensaje recibeDeSocket(ObjectInputStream objin, Cliente cliente){
        return estado.recibeDeSocket(objin, this, cliente);
    }
    public Mensaje enviarError(){
        return estado.enviarError(this);
    }

    public Object recibeDeCola(Mensaje mensaje, GestorPartida gestorPartida){
        return estado.recibeDeCola(this, mensaje, gestorPartida);
    }
}
